package com.com.ruandi.test15;

public class Test {

    public static void main(String[] args) {
        //创建两个图形对象
        //创建一个圆形对象
        Graphic g1 = new Circle(5);
        //创建一个矩形对象
        Graphic g2 = new Rectangle(10, 10);
        //创建一个三角形对象
        Graphic g3 = new Triangle(9, 10, 8);
        //创建一个图形数组
        Graphic[] arr = new Graphic[3];
        arr[0] = g1;
        arr[1] = g2;
        arr[2] = g3;
        //调用面积比较相等方法
        if (compareArea(g1, g2)){
            System.out.println(g1.showInfo()+"和"+g2.showInfo()+"的面积相等");
        }else {
            System.out.println(g1.showInfo()+"和"+g2.showInfo()+"的面积不相等");
        }
        //调用比较大小方法
        compareArea2(g1, g2);

        System.out.println("-------排序前--------");
        //调用遍历数组方法
        showGraphic(arr);
        System.out.println("-------排序后--------");
        //调用排序方法
        sortGraphic(arr);


    }
    //定义一个方法，比较两个图形的面积是否相等
    public static boolean compareArea(Graphic g1, Graphic g2){
        return g1.getArea() == g2.getArea();
    }
    //定义一个方法，比较两个图形中面积大的那个
    public static void compareArea2(Graphic g1, Graphic g2){
        if(g1.getArea() > g2.getArea()){
            System.out.println(g1.showInfo()+"的面积更大");
        }else{
            System.out.println(g2.showInfo()+"的面积更大");
        }
    }

    //定义一个方法，可以遍历图形数组
    public static void showGraphic(Graphic[] arr){
        //遍历数组
        for (Graphic graphic : arr) {
            System.out.println(graphic.showInfo()+"的面积为："+graphic.getArea());
        }
    }
//    public static void showGraphic(Graphic[] arr){
//        //遍历数组
//        for (Graphic graphic : arr) {
//            System.out.println(graphic+"面积为："+graphic.getArea()+"\n周长为："+graphic.getPerimeter());
//        }
//    }

    //定义一个方法，可以遍历图形数组，并将所有图形的面积从大到小进行排序
    public static void sortGraphic(Graphic[] arr){
        //冒泡排序
        //外循环控制轮数
        for (int i = 0; i < arr.length - 1; i++) {
            //默认有序
            boolean flag = true;
            //内循环控制比较
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //比较
                if(arr[j].getArea() < arr[j+1].getArea()){
                    Graphic temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    //标记无序
                    flag = false;
                }
            }
            if(flag){
                break;
            }
        }
        showGraphic(arr);
    }

}
